home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Plug-In Power Pack for Netscape Communicator
/
Plug-In Power Pack for Netscape Communicator.iso
/
plugins
/
dataviews
/
include
/
dvsetup.h
< prev
next >
Wrap
C/C++ Source or Header
|
1997-05-08
|
5KB
|
155 lines
/*
set up the jump tables for sun ( different on different hosts)
*/
#ifndef _DVSETUP_H
#define _DVSETUP_H
/*
* This provides the correct format of argument list (declarator) for
* the init_fun parameter list permitting it to be compiled by any of
* C++ and ANSI C, __STDC__, and traditional K&R C, without excessive
* duplication of macros for these three langauges.
*/
#ifdef __STDC__
#define def_initfun_declarator \
(ENTRY_PT *table)
#else
#define def_initfun_declarator \
(table) \
ENTRY_PT *table;
#endif
/* def_init_table() and def_entry_table() are for up to release 8.0 */
#ifdef DV_VD_HAS_PROTOS
#define def_init_protos /* NOOP */
#else
#define def_init_protos LOCAL void initial_draw V_P_ ((ADDRESS dgp));\
LOCAL void update_draw V_P_ ((ADDRESS dgp));\
LOCAL void cant_draw V_P_ ((ADDRESS dgp));\
LOCAL void cleanup_allocs V_P_ ((SAVED_DATA *sdp));\
LOCAL BOOLPARAM query_df V_P_ ((ADDRESS dgp, int flag, \
ADDRESS inarg, ADDRESS outarg));
#endif
#define def_init_table(table_name,init_fun_ptr,init_fun) \
def_init_protos \
LOCAL ENTRY_PT table_name[V_DFTABLE_SIZE];\
ENTRY_PT *init_fun V_P_((ENTRY_PT *table));\
ENTRY_PT *init_fun def_initfun_declarator \
{ \
if ( table == (ENTRY_PT*) 0 )\
table = table_name;\
table[0] = (ENTRY_PT) initial_draw;\
table[1] = (ENTRY_PT) cleanup_allocs;\
table[2] = (ENTRY_PT) update_draw;\
table[3] = (ENTRY_PT) cant_draw;\
table[4] = (ENTRY_PT) query_df;\
table[5] = (ENTRY_PT) NULL;\
table[6] = (ENTRY_PT) NULL;\
table[7] = (ENTRY_PT) NULL;\
table[8] = (ENTRY_PT) NULL;\
table[9] = (ENTRY_PT) NULL;\
return table;\
}\
GLOBALREF ENTRY_PT *(*init_fun_ptr) V_P_ ((ENTRY_PT *))
#define def_entry_table(table_name,init_fun_ptr,init_fun)\
def_init_table(table_name,init_fun_ptr,init_fun);\
GLOBALDEF ENTRY_PT *(*init_fun_ptr) V_P_ ((ENTRY_PT *)) = init_fun;
/*
* def_init_table1() is for those systems where DataViews has both dynamic
* and static linking capability under release 9.0 onwards - the use of a
* VD*G.c module will also be required under release 9.5 onward.
*/
#ifdef DV_VD_HAS_PROTOS
#define def_init_protos1 /* NOOP */
#else
#define def_init_protos1 LOCAL void cleanup_allocs V_P_ ((SAVED_DATA *sdp));\
LOCAL BOOLPARAM query_df V_P_ ((ADDRESS dgp, int flag, \
ADDRESS inarg, ADDRESS outarg));\
LOCAL BOOLPARAM setup_for_draw V_P_ ((ADDRESS dgp));\
LOCAL BOOLPARAM draw_context V_P_ ((ADDRESS dgp, RECTANGLE * vp, \
RECTANGLE ** obsvps, \
int draw_flag));\
LOCAL BOOLPARAM take_data V_P_ ((ADDRESS dgp));\
LOCAL BOOLPARAM draw_data V_P_ ((ADDRESS dgp, RECTANGLE * vp, \
RECTANGLE ** obsvps, \
int draw_flag));\
LOCAL BOOLPARAM recv_message V_P_ ((ADDRESS dgp, int flag, \
ADDRESS indata));
#endif
#define def_init_table1(table_name,init_fun_ptr,init_fun)\
def_init_protos1 \
LOCAL ENTRY_PT table_name[V_DFTABLE_SIZE];\
ENTRY_PT *init_fun V_P_ ((ENTRY_PT *table));\
ENTRY_PT *init_fun def_initfun_declarator \
{ \
if( table == (ENTRY_PT*) 0 ) \
table = table_name;\
table[0] = (ENTRY_PT) NULL;\
table[1] = (ENTRY_PT) cleanup_allocs;\
table[2] = (ENTRY_PT) NULL;\
table[3] = (ENTRY_PT) NULL;\
table[4] = (ENTRY_PT) query_df;\
table[5] = (ENTRY_PT) setup_for_draw;\
table[6] = (ENTRY_PT) draw_context;\
table[7] = (ENTRY_PT) draw_data;\
table[8] = (ENTRY_PT) take_data;\
table[9] = (ENTRY_PT) recv_message;\
return table;\
} \
GLOBALREF ENTRY_PT *(*init_fun_ptr) V_P_ ((ENTRY_PT *))
/*
* def_entry_table1() is for those systems where DataViews has only static
* linking capability under release 9.0 onwards and for systems running
* Windows NT
*/
#ifndef WIN32
#define def_entry_table1(table_name,init_fun_ptr,init_fun) \
def_init_table1(table_name,init_fun_ptr,init_fun);\
GLOBALDEF ENTRY_PT *(*init_fun_ptr) V_P_ ((ENTRY_PT *)) = init_fun;
#else
#define def_entry_table1(table_name,init_fun_ptr,init_fun) \
def_init_protos1 \
LOCAL ENTRY_PT table_name[V_DFTABLE_SIZE];\
ENTRY_PT *init_fun V_P_ ((ENTRY_PT *table));\
ENTRY_PT *init_fun def_initfun_declarator \
{ \
if( table == (ENTRY_PT*) 0 ) \
table = table_name;\
table[0] = (ENTRY_PT) NULL;\
table[1] = (ENTRY_PT) cleanup_allocs;\
table[2] = (ENTRY_PT) NULL;\
table[3] = (ENTRY_PT) NULL;\
table[4] = (ENTRY_PT) query_df;\
table[5] = (ENTRY_PT) setup_for_draw;\
table[6] = (ENTRY_PT) draw_context;\
table[7] = (ENTRY_PT) draw_data;\
table[8] = (ENTRY_PT) take_data;\
table[9] = (ENTRY_PT) recv_message;\
return table;\
} \
GLOBALDEF ENTRY_PT *(*init_fun_ptr) V_P_ ((ENTRY_PT *)) = init_fun;
#endif
/* load_entry_table() and load_entry_table1() are obsolete */
#define load_entry_table(table_name,init_fun) /* NOOP */
#define load_entry_table1(table_name,init_fun) /* NOOP */
#endif /* _DVSETUP_H */